home *** CD-ROM | disk | FTP | other *** search
/ Basic Instinct 2 Press Kit / Basic Instinct 2 Press Kit.iso / pc / main.dxr / FlashPaper_1_BIProdNotes.swf / scripts / __Packages / FPUI / Slider.as < prev    next >
Encoding:
Text File  |  2006-03-15  |  8.6 KB  |  297 lines

  1. class FPUI.Slider extends FPUI.Component
  2. {
  3.    var m_depth = 0;
  4.    var m_minValue = 0;
  5.    var m_maxValue = 100;
  6.    var m_range = 100;
  7.    var m_value = 0;
  8.    var m_smStepAmount = 1;
  9.    var m_lgStepAmount = 5;
  10.    var m_horizontal = true;
  11.    var m_thumbMC = null;
  12.    var m_scrollTrackMC = null;
  13.    var m_snapValues = null;
  14.    var m_snapThreshold = 0;
  15.    var m_thumbPressed = false;
  16.    var m_distanceFromCenter = 0;
  17.    var m_scrollableArea = 0;
  18.    var m_keyController = null;
  19.    function Slider()
  20.    {
  21.       var _loc1_ = this;
  22.       super();
  23.       _loc1_.m_eatsNavKeysWhenFocused = true;
  24.       _loc1_.m_snapValues = new Array();
  25.       _loc1_.m_width = !_loc1_.m_horizontal ? _loc1_._height : _loc1_._width;
  26.       _loc1_._xscale = 100;
  27.       _loc1_._yscale = 100;
  28.       _loc1_._rotation = 0;
  29.       _loc1_.attachMovie("fsl_scrollTrack","m_scrollTrackMC",_loc1_.m_depth++,{_y:1});
  30.       _loc1_.attachMovie("fsl_pointerThumb","m_thumbMC",_loc1_.m_depth++);
  31.       _loc1_.setEnabled(_loc1_.enabled);
  32.       _loc1_.setSliderProperties(_loc1_.m_minValue,_loc1_.m_maxValue);
  33.       _loc1_.setSize(_loc1_.m_width);
  34.       _loc1_.setHorizontal(_loc1_.m_horizontal);
  35.    }
  36.    function getValue()
  37.    {
  38.       return this.m_value;
  39.    }
  40.    function setZoomKeyController(controller)
  41.    {
  42.       this.m_keyController = controller;
  43.    }
  44.    function setSize(pwidth)
  45.    {
  46.       var _loc1_ = this;
  47.       var _loc2_ = pwidth;
  48.       if(_loc2_ < 4)
  49.       {
  50.          _loc2_ = 4;
  51.       }
  52.       _loc1_.m_width = _loc2_;
  53.       _loc1_.m_scrollableArea = !_loc1_.m_thumbMC ? _loc1_.m_width - 5 : _loc1_.m_width - 2 - _loc1_.m_thumbMC._width;
  54.       _loc1_.m_scrollTrackMC._x = _loc1_.m_width / 2;
  55.       _loc1_.setValue(_loc1_.m_value);
  56.    }
  57.    function setSliderProperties(min, max)
  58.    {
  59.       var _loc1_ = this;
  60.       if(max <= min)
  61.       {
  62.          return false;
  63.       }
  64.       _loc1_.m_maxValue = Number(max);
  65.       _loc1_.m_minValue = Number(min);
  66.       if(isNaN(_loc1_.m_maxValue) || isNaN(_loc1_.m_minValue))
  67.       {
  68.          return false;
  69.       }
  70.       _loc1_.m_range = _loc1_.m_maxValue - _loc1_.m_minValue;
  71.       _loc1_.setValue(_loc1_.m_value);
  72.       return true;
  73.    }
  74.    function setSnapValues(a)
  75.    {
  76.       this.m_snapValues = a;
  77.    }
  78.    function setSnapThreshold(i)
  79.    {
  80.       this.m_snapThreshold = i;
  81.    }
  82.    function setEnabled(penable)
  83.    {
  84.       var _loc1_ = this;
  85.       var _loc2_ = penable;
  86.       super.setEnabled(_loc2_);
  87.       _loc1_.enabled = _loc2_;
  88.       if(!_loc2_)
  89.       {
  90.          _loc1_.m_scrollTrackMC.gotoAndStop("disabled");
  91.          _loc1_.m_thumbMC.gotoAndStop("disabled");
  92.          delete _loc1_.onPress;
  93.          delete _loc1_.onRelease;
  94.          delete _loc1_.onReleaseOutside;
  95.          delete _loc1_.onRollOver;
  96.          delete _loc1_.onRollOut;
  97.          delete _loc1_.onMouseMove;
  98.       }
  99.       else
  100.       {
  101.          _loc1_.m_scrollTrackMC.gotoAndStop(1);
  102.          _loc1_.m_thumbMC.gotoAndStop(1);
  103.          _loc1_.onPress = _loc1_.myOnPress;
  104.          _loc1_.onRelease = _loc1_.myOnRelease;
  105.          _loc1_.onReleaseOutside = _loc1_.myOnRelease;
  106.          _loc1_.onRollOver = _loc1_.myOnRollOver;
  107.          _loc1_.onRollOut = _loc1_.myOnRollOut;
  108.       }
  109.       _loc1_.setSize(_loc1_.m_width);
  110.    }
  111.    function setHorizontal(horizontal)
  112.    {
  113.       var _loc1_ = this;
  114.       if(horizontal)
  115.       {
  116.          _loc1_._rotation = 0;
  117.          _loc1_.m_scrollTrackMC._rotation = 0;
  118.          _loc1_.m_scrollTrackMC._yscale = 100;
  119.       }
  120.       else
  121.       {
  122.          _loc1_._rotation = 90;
  123.          _loc1_.m_scrollTrackMC._rotation = 180;
  124.          _loc1_.m_scrollTrackMC._yscale = -100;
  125.       }
  126.       _loc1_.m_horizontal = horizontal;
  127.       _loc1_.setValue(_loc1_.getValue());
  128.    }
  129.    function setValue(value)
  130.    {
  131.       var _loc1_ = this;
  132.       var _loc3_ = value;
  133.       _loc3_ = Math.min(Math.max(_loc3_,_loc1_.m_minValue),_loc1_.m_maxValue);
  134.       if(_loc1_.m_snapValues != undefined && _loc1_.m_snapValues.length > 0)
  135.       {
  136.          var _loc2_ = 0;
  137.          while(_loc2_ < _loc1_.m_snapValues.length)
  138.          {
  139.             if(_loc3_ >= _loc1_.m_snapValues[_loc2_] - _loc1_.m_snapThreshold && _loc3_ <= _loc1_.m_snapValues[_loc2_] + _loc1_.m_snapThreshold)
  140.             {
  141.                _loc3_ = _loc1_.m_snapValues[_loc2_];
  142.                break;
  143.             }
  144.             _loc2_ = _loc2_ + 1;
  145.          }
  146.       }
  147.       _loc1_.m_value = _loc3_;
  148.       var xPos = _loc1_.valueToCoord(_loc3_);
  149.       _loc1_.m_thumbMC._x = xPos;
  150.       var ltMC = _loc1_.m_scrollTrackMC.left_mc;
  151.       var midLtMC = _loc1_.m_scrollTrackMC.middleLeft_mc;
  152.       var midRtMC = _loc1_.m_scrollTrackMC.middleRight_mc;
  153.       var rtMC = _loc1_.m_scrollTrackMC.right_mc;
  154.       ltMC._x = (- _loc1_.m_width) / 2;
  155.       if(!_loc1_.m_horizontal)
  156.       {
  157.          xPos = _loc1_.valueToCoord(_loc1_.m_range - _loc3_ + _loc1_.m_minValue * 2);
  158.       }
  159.       midLtMC._width = xPos + _loc1_.m_thumbMC._width / 2;
  160.       midLtMC._x = ltMC._x + ltMC._width;
  161.       midRtMC._width = _loc1_.m_width - xPos - ltMC._width - rtMC._width - (_loc1_.m_thumbMC._width - 2) / 2;
  162.       midRtMC._x = midLtMC._x + midLtMC._width;
  163.       rtMC._x = midRtMC._x + midRtMC._width;
  164.       _loc1_.executeCallBack();
  165.    }
  166.    function getValueFromThumb()
  167.    {
  168.       var _loc1_ = this;
  169.       var _loc2_ = undefined;
  170.       if(_loc1_.m_thumbPressed)
  171.       {
  172.          _loc2_ = _loc1_._xmouse - _loc1_.m_distanceFromCenter;
  173.       }
  174.       else
  175.       {
  176.          _loc2_ = _loc1_._xmouse - _loc1_.m_thumbMC._width / 2;
  177.       }
  178.       _loc2_ = Math.max(1,Math.min(_loc2_,_loc1_.m_scrollableArea + 1));
  179.       return _loc1_.coordToValue(_loc2_);
  180.    }
  181.    function setValueFromThumb()
  182.    {
  183.       this.setValue(this.getValueFromThumb());
  184.    }
  185.    function myOnMouseMove()
  186.    {
  187.       this.setValueFromThumb();
  188.    }
  189.    function go(s)
  190.    {
  191.       var _loc1_ = this;
  192.       if(s == "up")
  193.       {
  194.          if(_loc1_.getFocused())
  195.          {
  196.             _loc1_.m_thumbMC.gotoAndStop("focus");
  197.          }
  198.          else
  199.          {
  200.             _loc1_.m_thumbMC.gotoAndStop(1);
  201.          }
  202.       }
  203.       else
  204.       {
  205.          _loc1_.m_thumbMC.gotoAndStop(s);
  206.       }
  207.    }
  208.    function onComponentKillFocus()
  209.    {
  210.       super.onComponentKillFocus();
  211.       this.go("up");
  212.    }
  213.    function myOnRelease()
  214.    {
  215.       var _loc1_ = this;
  216.       _loc1_.m_focused = false;
  217.       _loc1_.setValueFromThumb();
  218.       delete _loc1_.onMouseMove;
  219.       _loc1_.m_thumbPressed = false;
  220.       _loc1_.m_distanceFromCenter = 0;
  221.       _loc1_.go("up");
  222.       Selection.setFocus(null);
  223.    }
  224.    function myOnPress()
  225.    {
  226.       var _loc1_ = this;
  227.       _loc1_.pressFocus();
  228.       _loc1_.m_thumbPressed = _loc1_.m_thumbMC.hitTest(_root._xmouse,_root._ymouse);
  229.       if(_loc1_.m_thumbPressed)
  230.       {
  231.          _loc1_.m_distanceFromCenter = _loc1_._xmouse - _loc1_.m_thumbMC._x;
  232.       }
  233.       _loc1_.setValueFromThumb();
  234.       _loc1_.onMouseMove = _loc1_.myOnMouseMove;
  235.       _loc1_.go("pressed");
  236.    }
  237.    function myOnRollOver()
  238.    {
  239.       this.go("over");
  240.    }
  241.    function myOnRollOut()
  242.    {
  243.       this.go("up");
  244.    }
  245.    function coordToValue(coord)
  246.    {
  247.       var _loc1_ = this;
  248.       if(_loc1_.m_horizontal)
  249.       {
  250.          return (coord - 1) / _loc1_.m_scrollableArea * _loc1_.m_range + _loc1_.m_minValue;
  251.       }
  252.       return Math.abs(coord - 1 - _loc1_.m_scrollableArea) / _loc1_.m_scrollableArea * _loc1_.m_range + _loc1_.m_minValue;
  253.    }
  254.    function valueToCoord(value)
  255.    {
  256.       var _loc1_ = this;
  257.       if(_loc1_.m_horizontal)
  258.       {
  259.          return (value - _loc1_.m_minValue) / _loc1_.m_range * _loc1_.m_scrollableArea + 1;
  260.       }
  261.       return Math.abs(value - (_loc1_.m_range + _loc1_.m_minValue)) / _loc1_.m_range * _loc1_.m_scrollableArea + 1;
  262.    }
  263.    function onComponentKeyDown()
  264.    {
  265.       var _loc1_ = this;
  266.       if(_loc1_.m_enable)
  267.       {
  268.          var increase = !!_loc1_.m_horizontal ? 39 : 38;
  269.          var decrease = !!_loc1_.m_horizontal ? 37 : 40;
  270.          var _loc2_ = Key.getCode();
  271.          var _loc3_ = !Key.isDown(17) ? _loc1_.m_smStepAmount : _loc1_.m_lgStepAmount;
  272.          if(_loc2_ == increase)
  273.          {
  274.             if(_loc1_.m_keyController != null)
  275.             {
  276.                _loc1_.m_keyController.zoomIn();
  277.             }
  278.             else
  279.             {
  280.                _loc1_.setValue(_loc1_.m_value + _loc3_);
  281.             }
  282.          }
  283.          else if(_loc2_ == decrease)
  284.          {
  285.             if(_loc1_.m_keyController != null)
  286.             {
  287.                _loc1_.m_keyController.zoomOut();
  288.             }
  289.             else
  290.             {
  291.                _loc1_.setValue(_loc1_.m_value - _loc3_);
  292.             }
  293.          }
  294.       }
  295.    }
  296. }
  297.